home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #2 / Monster Media No. 2 (Monster Media)(1994).ISO / utils1 / 2m21src.zip / 2MFKIT.ASM < prev    next >
Assembly Source File  |  1994-05-31  |  4KB  |  106 lines

  1.  
  2. ;┌───────────────────────────────────────────────────────────────────┐
  3. ;│                                                                   │
  4. ;│                 █████ █   █ █▀▀▀▀ █   █ ▀▀█▀▀ ▀▀█▀▀               │
  5. ;│                     █ ██ ██ █     █  █    █     █                 │
  6. ;│                 █████ █ █ █ █▀▀   █▀█     █     █                 │
  7. ;│                 █     █   █ █     █  █    █     █                 │
  8. ;│                 █████ █   █ █     █   █ ▄▄█▄▄   █                 │
  9. ;│                                                                   │
  10. ;│      2MFKIT 2.1  -  (C) Mayo 1994  Ciriaco García de Celis.       │
  11. ;│                                                                   │
  12. ;│        FICHERO CON CODIGO ENSAMBLADOR LINKABLE CON 2MF.C          │
  13. ;│                                                                   │
  14. ;│       Código de 2M que será almacenado en los sectores de         │
  15. ;│       los disquetes y algunas funciones ASM de utilidad.          │
  16. ;│                                                                   │
  17. ;│  Proceso:                                                         │
  18. ;│                                                                   │
  19. ;│    TASM    2MFKIT  /m5 /mx                                        │
  20. ;│                                                                   │
  21. ;│    El fichero 2MFBOOT.DB que se carga con INCLUDE debe obtenerse  │
  22. ;│    previamente a partir de 2MFBOOT.ASM con ayuda de 2MFBMAKE.BAS  │
  23. ;│                                                                   │
  24. ;└───────────────────────────────────────────────────────────────────┘
  25.  
  26. _DATA          SEGMENT WORD PUBLIC 'DATA'
  27.                ASSUME  CS:_DATA, DS:_DATA
  28.  
  29.                PUBLIC  _Boot2mCode, _Boot2mLong
  30.                PUBLIC  _biosdsk,    _PicoRetardo
  31.  
  32. ; ------------ Código 2M para grabar en los 5 sectores ocultos de los
  33. ;              disquetes de alta densidad al formatear.
  34.  
  35. _Boot2mCode:   INCLUDE 2MFBOOT.DB
  36.  
  37. _Boot2mLong    DW    $-OFFSET _Boot2mCode
  38.  
  39. ; ------------ Rutina de acceso a disco vía BIOS. No se utiliza la
  40. ;              función biosdisk() del compilador porque en algunas
  41. ;              versiones del mismo hace tonterías que no debe. Así,
  42. ;              además, se puede llamar a INT 13h con CALL (bueno,
  43. ;              con RETF) para que dentro de WINDOWS 2MF /M no de
  44. ;              problemas; además, la función de formateo de 2M
  45. ;              requiere SI="2M" al llamar.
  46.  
  47. _biosdsk       PROC  FAR
  48.                PUSH  BP
  49.                MOV   BP,SP
  50.                PUSH  SI
  51.                PUSH  DI
  52.                PUSHF                   ; estructura para futuro IRET
  53.                PUSH  CS
  54.                LEA   AX,bdsk_ret
  55.                PUSH  AX
  56.                XOR   AX,AX
  57.                MOV   ES,AX
  58.                PUSH  ES:[13h*4+2]      ; INT 13h -> pila
  59.                PUSH  ES:[13h*4]
  60.                MOV   AH,[BP+6]
  61.                MOV   DL,[BP+8]
  62.                MOV   DH,[BP+10]
  63.                MOV   CH,[BP+12]
  64.                MOV   CL,[BP+14]
  65.                MOV   AL,[BP+16]
  66.                LES   BX,DWORD PTR [BP+18]
  67.                MOV   SI,"2M"
  68.                RETF                    ; ejecutar INT 13h
  69. bdsk_ret:      POP   DI
  70.                POP   SI
  71.                POP   BP
  72.                MOV   AL,AH             ; resultado
  73.                MOV   AH,0
  74.                RET
  75. _biosdsk       ENDP
  76.  
  77.  
  78. ; ------------ Pequeño retardo de medio milisegundo.
  79.  
  80. _PicoRetardo   PROC  FAR
  81.                PUSH  AX
  82.                PUSHF
  83.                POP   AX
  84.                OR    AH,70h
  85.                PUSH  AX
  86.                POPF
  87.                PUSHF
  88.                POP   AX
  89.                AND   AH,0F0h
  90.                CMP   AH,0F0h           ; ¿es PC/XT?
  91.                JE    xt
  92.                MOV   CX,33             ; 18÷1193180*33*1000 = 0.5 ms
  93. wrf:           IN    AL,61h
  94.                AND   AL,10h
  95.                CMP   AL,AH
  96.                JE    wrf          ; esperar pulso refresco memoria
  97.                MOV   AH,AL
  98.                LOOP  wrf
  99. xt:            POP   AX
  100.                RET
  101. _PicoRetardo   ENDP
  102.  
  103. _DATA          ENDS
  104.  
  105.                END
  106.